package com.ruc.deke.service;

import java.sql.Connection;

/**
 * 进行sql语句答案的判断
 * 
 * @author: cyj
 * @date: 2017年3月31日 下午2:36:43
 */
public interface SqlJudgeService {

	/**
	 * 查询语句的评判
	 * 
	 * @param standardSolution
	 * @param userSolution
	 * @param extraString
	 * @return
	 * @author: cyj
	 * @date: 2017年3月31日 下午2:48:46
	 */
	public int selectJudge(Connection conn, String standardSolution, String userSolution, String extraString);

	/**
	 * 更新语句判定
	 * 
	 * @param userSolution
	 * @param extraString
	 * @return
	 * @author: cyj
	 * @date: 2017年3月31日 下午2:55:21
	 */
	public int updateJudge(Connection conn, String userSolution, String extraString);

	/**
	 * 表的定义、修改、删除判定
	 * 
	 * @param userSolution
	 * @param extraString
	 * @return
	 * @author: cyj
	 * @date: 2017年3月31日 下午2:52:58
	 */
	public int tableJudge(Connection conn, String userSolution, String extraString);

	/**
	 * 索引的定义修改、删除判定
	 * 
	 * @param userSolution
	 * @param extraString
	 * @return
	 * @author: cyj
	 * @date: 2017年3月31日 下午2:53:33
	 */
	public int indexJudge(Connection conn, String userSolution, String extraString);

	/**
	 * 视图的定义、修改、删除判定
	 * 
	 * @param userSolution
	 * @param extraString
	 * @return
	 * @author: cyj
	 * @date: 2017年3月31日 下午2:54:15
	 */
	public int viewJudge(Connection conn, String userSolution, String extraString);

	/**
	 * 实体完整性判定
	 * 
	 * @param userSolution
	 * @param extraString
	 * @return
	 * @author: cyj
	 * @date: 2017年3月31日 下午2:54:48
	 */
	public int entityJudge(Connection conn, String userSolution, String extraString);

	/**
	 * 参照完整性判定
	 * 
	 * @param userSolution
	 * @param extraString
	 * @return
	 * @author: cyj
	 * @date: 2017年3月31日 下午2:55:44
	 */
	public int referJudge(Connection conn, String userSolution, String extraString);

	/**
	 * 存储过程判断
	 * 
	 * @param userSolution
	 * @param extraString
	 * @return
	 * @author: cyj
	 * @date: 2017年4月5日 下午12:43:24
	 */
	public int saveProcessJudge(Connection conn, String userSolution, String extraString);

	/**
	 * 触发器的判断
	 * 
	 * @param solution
	 * @param extraString
	 * @return
	 * @author: cyj
	 * @date: 2017年4月5日 下午11:44:49
	 */
	public int triggerJudge(Connection conn, String solution, String extraString);

	/**
	 * 进行授权与回收的判断
	 * 
	 * @param conn
	 * @param userSolution
	 * @param extraString
	 * @return
	 * @author: cyj
	 * @date: 2017年4月8日 上午11:13:09
	 */
	public int authJudge(Connection conn, String userSolution, String extraString);

	public int RollbackJudge(Connection conn, String userSolution, String extraString);

	int ExplainJudge(Connection conn, Connection dbConn, String userSolution, String teacherSoultion, int befModuleId,
			int befExpId);

	int unExplainJudge(Connection conn, Connection dbConn, String userSolution, String teacherSoultion, int befModuleId,
			int befExpId);

	public int updateJudge1(Connection conn, String userSolution,String solution, String extraString);
}
